/obj/test/fraction
	var/Fraction
		One = new(1, 1)
		Two = new(2, 1)
		Half = new(1, 2)
		Third = new(1, 3)

	verb
		Add_test()
			var/Fraction/F = One.Add(Two)
			AssertEqual(F.Value(), 3)

		Inverse_test()
			for(var/Fraction/F in list(One, Two, Half, Third))
				var/Fraction/I = F.Multiply(F.Inverse())
				Assert(I.Equals(One))

		Multiply_test()
			var/Fraction/F = Two.Multiply(Half)
			Assert(F.Equals(One))

		Reduce_test()
			var/Fraction
				F = new(0.5, 1)
				F2 = F.Reduce()
			Assert(F.Equals(F2))
			F = new(33, 99)
			F2 = F.Reduce()
			Assert(F.Equals(F2))
			Assert(F.Equals(Third))

		Value_test()
			var/Fraction/F = new(2, 2)
			AssertEqual(F.Value(), 1)
			Assert(F.Equals(One))
			Assert(Two.Equals(F.Multiply(2)))
			AssertEqual(Half.Value(), 0.5)
